<?php

declare(strict_types=1);

namespace DreamCat\StateMachine\Factory;

use DreamCat\StateMachine\Parser\ConfigParserInterface;
use DreamCat\StateMachine\Parser\Impl\DirConfigParser;
use DreamCat\StateMachine\Parser\Impl\SingleFileConfigParser;
use RuntimeException;

/**
 * 配置解析器工厂
 * @author vijay
 */
class ConfigParseFactory
{
    /**
     * 生成配置解析器
     * @param string $path 路径
     * @return ConfigParserInterface
     */
    public static function getConfigParser(string $path): ConfigParserInterface
    {
        if (is_dir($path)) {
            return new DirConfigParser($path);
        } elseif (is_file($path)) {
            return new SingleFileConfigParser($path);
        } else {
            throw new RuntimeException("路径 {$path} 即不是文件也不是目录");
        }
    }
}

# end of file
